#pragma once

#include "IMxPluginBase.h"

//class IPluginICProcStepsParamIID does NOT exist because you will never need to create an instance of IPluginICProcStepsParam. 
//Instead create instances of its derived types IPluginICProcStepsParamInt, Double, String, etc

#define IPluginICProcStepsParamBadName "[badname]"	
#define IPluginICProcStepsParamBadValue "[badvalue]"	
#define IPluginICProcStepsParamXmlProcParam "Param"	
#define IPluginICProcStepsParamAttribName "Name"	
#define IPluginICProcStepsParamAttribOutputNameResult "Result"			//only for output
#define IPluginICProcStepsParamAttribOutputNameScore "Score"		//only for output, analysis
#define IPluginICProcStepsParamAttribIndex "Index"	
#define IPluginICProcStepsParamAttribType "Type"	
#define IPluginICProcStepsParamAttribValue  "Value"


class IPluginICProcStepsParam  :  public IMxPluginBase
{
public:
	static const int		  Invalid = -1;

	enum Direction 
	{
		input = 0L,
		output
	};

public:
	virtual const char *MXSTDMETHOD GetType() = 0;
	virtual bool		MXSTDMETHOD IsValid() = 0;
	virtual IPluginICProcStepsParam::Direction MXSTDMETHOD GetDirection() = 0;
	virtual const char *MXSTDMETHOD GetName() = 0;			//return value even if it is invalid
	virtual int			MXSTDMETHOD GetIndex() = 0;		//return value even if it is invalid, index in the called function's parameter list, NOT position in ProcParams::_Params[pos] 
	virtual const char *MXSTDMETHOD GetValueStr() = 0;

};